樹莓派開發實戰, 2/e (Raspberry Pi Cookbook, 2/e)

樹莓派開發實戰, 2/e (Raspberry Pi Cookbook, 2/e)

作者: [英]Simon Monk 蒙克
出版社: 人民郵電
出版在: 2017-03-01
ISBN-13: 9787115447203
ISBN-10: 7115447209
裝訂格式: 平裝
總頁數: 417 頁




內容描述


樹莓派(Raspberry Pi)是一款基於Linux系統的、只有一張信用卡大小的卡片式電腦。研發樹莓派的起初目的是通過低價硬件和自由軟件來推動學校的基礎電腦學科教育,但很快樹莓派就得到電腦和硬件愛好者的青睞;他們用它學習編程,並創造出各種各樣新奇的、風靡一時的軟硬件應用。
本書由多產作家Simon Monk編寫,是將內容進行全面升級之後的第2版,囊括了豐富的實踐示例,詳細講解了樹莓派的配置與管理、網絡連接、操作系統及軟件。另外,本書還介紹了使用Python進行樹莓派開發的各項技巧,書中介紹了有關Python編程的基礎知識、列表與字典、Python高級特性。同時,本書還介紹了有關機器視覺、硬件基礎、控制硬件、電機、數字輸入、傳感器、顯示設備、物聯網及Arduino等相關知識。
本書適合程序員和電腦軟、硬件愛好者,以及對樹莓派感興趣的讀者閱讀,也適合作為樹莓派相關實踐課程的指導用書。


目錄大綱


第1章配置與管理1 
1.0引言1 
1.1選擇樹莓派型號1 
1.2封裝樹莓派3 
1.3選擇電源4 
1.4選擇操作系統發行包6 
1.5通過NOOBS刷寫microSD卡7 
1.6裝配系統9 
1.7連接DVI或VGA顯示器10 
1.8使用複合視頻顯示器/TV 10 
1.9調整顯示器中的圖像尺寸12 
1.10優化性能13 
1.11修改密碼15 
1.12讓樹莓派開機後直接進入窗口系統16 
1.13關閉樹莓派17 
1.14安裝樹莓派攝像頭模塊18 
1.15使用藍牙設備21 

第2章網絡連接23 
2.0引言23 
2.1連接有線網絡23 
2.2查看自己的IP地址25 
2.3配置靜態IP地址26 
2.4為樹莓派配置網絡名稱28 
2.5配置無線網絡連接29 
2.6使用控制台線聯網31 
2.7利用SSH遠程控制樹莓派33 
2.8利用VNC遠程控制樹莓派35 
2.9利用RDP遠程控制樹莓派36 
2.10在Mac網絡中實現文件共享38 
2.11在Mac上共享樹莓派的屏幕39 
2.12將樹莓派用作網絡存儲服務器41 
2.13網絡打印44 

第3章操作系統47 
3.0引言47 
3.1通過圖形 界面移動文件47 
3.2啟動一個終端會話49 
3.3利用終端瀏覽文件系統50 
3.4複製文件或文件夾52 
3.5重命名文件和文件夾53 
3.6編輯文件54 
3.7查看文件內容56 
3.8不借助編輯器的情況下創建文件57 
3.9創建目錄57 
3.10刪除文件或目錄58 
3.11以超級用戶權限執行任務59 
3.12理解文件權限60 
3.13修改文件的權限61 
3.14修改文件的屬主62 
3.15屏幕截圖63 
3.16利用apt-get安裝軟件64 
3.17刪除利用apt-get安裝的軟件65 
3.18利用Pip安裝Python軟件包65 
3.19通過命令行獲取文件66 
3.20利用Git獲取源代碼67 
3.21在系統啟動時自動運行程序或腳本67 
3.22讓程序或腳本作為服務自動運行68 
3.23定期自動運行程序或腳本70 
3.24搜索功能71 
3.25使用命令行歷史記錄功能72 
3.26監視處理器活動73 
3.27文件壓縮75 
3.28列出已連接的USB設備76 
3.29將輸出從命令行重定向到文件76 
3.30連接文件77 
3.31使用管道78 
3.32 將輸出隱藏到終端78 
3.33在後台運行程序79 
3.34創建命令別名80 
3.35設置日期和時間80 
3.36查看SD卡剩餘存儲空間81 

第4章軟件83 
4.0引言83 
4.1搭建媒體中心83 
4.2安裝Oice軟件84 
4.3安裝其他瀏覽器86 
4.4使用樹莓派商店87 
4.5打造網絡攝像頭服務器88 
4.6運行老式遊戲控制台模擬器90 
4.7運行樹莓派版Minecraft 92 
4.8運行Minecraft服務器93 
4.9運行Open Arena 95 
4.10樹莓派無線電發射器96 
4.11運行GIMP 98 
4.12互聯網廣播99 

第5章Python入門101 
5.0引言101 
5.1在Python 2和Python 3之間做出選擇101 
5.2使用IDLE編輯Python程序102 
5.3使用Python控制台104 
5.4利用終端運行Python程序105 
5.5變量106 
5.6顯示輸出結果107 
5.7讀取用戶輸入107 
5.8算術運算108 
5.9創建字符串109 
5.10連接(合併)字符串110 
5.11將數字轉換為字符串111 
5.12將字符串轉換為數字111 
5.13確定字符串的長度112 
5.14確定某字符串在另一個 字符串中的位置113 
5.15截取部分字符串113 
5.16使用字符串替換另一個字符串中的內容114 
5.17字符串的大小寫轉換115 
5.18根據條件運行命令116 
5.19值的比較117 
5.20邏輯運算符118 
5.21將指令重複執行特定次數119 
5.22重複執行指令直到特定條件改變為止120 
5.23跳出循環語句120 
5.24定義Python函數121 

第6章Python語言中的列表與字典123 
6.0引言123 
6.1創建列表123 
6.2訪問列表元素124 
6.3確定列表長度125 
6.4為列表添加元素125 
6.5刪除列表元素126 
6.6通過解析字符串創建列表127 
6.7遍歷列表127 
6.8枚舉列表128 
6.9列表排序129 
6.10分割列表130 
6.11將函數應用於列表131 
6.12創建字典131 
6.13訪問字典133 
6.14刪除字典元素134 
6.15遍歷字典134 

第7章Python高級特性137 
7.0引言137 
7.1格式化數字137 
7.2格式化時間和日期138 
7.3返回多個值139 
7.4定義類140 
7.5定義方法141 
7.6繼承142 
7.7向文件中 入內容143 
7.8讀文件144 
7.9序列化(Pickling) 145 
7.10異常處理146 
7.11使用模塊147 
7.12隨機數148 
7.13利用Python發送Web請求149 
7.14 Python的命令行參數150 
7.15從Python運行Linux命令151 
7.16從Python發送電子郵件152 
7.17利用Python編寫簡單Web服務器153 
7.18同時進行多件事情154 
7.19讓Python無所事事156 
7.20將Python應用於樹莓派版Minecraft 156 

第8章機器視覺159 
8.0引言159 
8.1安裝SimpleCV 159 
8.2為機器視覺配置USB攝像頭160 
8.3將樹莓派的攝像頭模塊用於機器視覺162 
8.4數硬幣163 
8.5人臉檢測166 
8.6運動檢測168 
8.7光學字符識別170 

第9章硬件基礎173 
9.0引言173 
9.1 GPIO連接器使用說明173 
9.2使用GPIO接口時樹莓派的安全保護176 
9.3配置I2C 176 
9.4使用I2C工具178 
9.5配置SPI 179 
9.6安裝PySerial以便從Python訪問串口180 
9.7安裝Minicom以檢測串口181 
9.8使用帶有跳線的麵包板182 
9.9使用樹莓派的排線連接面 板183 
9.10使用樹莓派Squid 184 
9.11使用Raspberry Squid按鈕186 
9.12利用兩個電阻將5V信號轉換為3.3V 187 
9.13利用電平轉換模塊將5V信號轉換為3.3V 189 
9.14利用電池為樹莓派供電190 
9.15利用鋰電池為樹莓派供電192 
9.16 Sense HAT入門指南193 
9.17 Explorer HAT Pro入門指南194 
9.18 RaspiRobot Board入門指南196 
9.19使用Pi Plate原型板198 
9.20製作樹莓派擴展板(Hardware At Top,HAT ) 201 
9.21樹莓派的計算模塊204 
9.22 Pi Zero 205 

第10章控制硬件207 
10.0引言207 
10.1連接LED 207 
10.2讓GPIO引腳進入安全狀態209 
10.3控制LED的亮度210 
10.4製造蜂鳴聲213 
10.5利用晶體管開關大功率直流設備214 
10.6使用繼電器控制大功率設備的開關216 
10.7控制高壓交流設備219 
10.8編寫用於控制開關的用戶界面220 
10.9編寫控制LED和電機的PWM功率的用戶界面221 
10.10改變RGB LED的顏色223 
10.11使用大量LED(Charlieplexing方式) 225 
10.12將 擬儀表用作顯示器228 
10.13中斷編程230 

第11章電機233 
11.0引言233 
11.1控制伺服電機233 
11.2精確控制伺服電機237 
11.3控制多台伺服電機239 
11.4控制直流電動機的速度242 
11.5控制直流電機的方向244 
11.6使用單極步進電機248 
11.7使用雙極步進電機252 
11.8利用步進電機HAT驅動雙極步進電機253 
11.9使用RaspiRobot板驅動雙極步進電機256 
11.10打造一款簡單的機器人小車257 
第12章數字輸入261 
12.0引言261 
12.1連接按鈕開關261 
12.2通過按鈕開關切換開關狀態264 
12.3使用雙位撥動開關或滑動開關265 
12.4使用三位撥動開關或滑動開關266 
12.5按鈕去抖269 
12.6使用外部上拉電阻271 
12.7使用旋轉(正交)編碼器272 
12.8使用數字鍵盤275 
12.9檢測移動278 
12.10為樹莓派添加GPS 280 
12.11攔截按鍵283 
12.12攔截鼠標移動285 
12.13使用實時時鐘模塊286 

第13章傳感器291 
13.0引言291 
13.1使用電阻式傳感器 291 
13.2測量亮度296 
13.3利用熱敏電阻測量溫度298 
13.4檢測甲烷301 
13.5測量電壓304 
13.6為測量而降低電壓306 
13.7使用電阻式傳感器與ADC 309 
13.8使用ADC測量溫度310 
13.9測量樹莓派的CPU溫度312 
13.10利用Sense HAT測量溫度、濕度和氣壓313 
13.11利用數字傳感器測量溫度315 
13.12利用MCP3008模塊測量加速度318 
13.13使用Sense HAT的慣性管理單元(IMU) 321 
13.14利用Sense HAT尋找磁北323 
13.15利用簧片開關檢測磁鐵323 
13.16利用Sense HAT感應磁場325 
13.17測量距離325 
13.18電容式觸摸傳感技術328 
13.19顯示傳感器的值331 
13.20利用USB閃存驅動器記錄日誌332 

第14章顯示設備335 
14.0引言335 
14.1使用四位LED顯示設備335 
14.2在I2C LED矩陣上面顯示消息337 
14.3使用Sense HAT LED矩形顯示器339 
14.4在Alphanumeric LCD HAT上顯示消息341 
14.5在Alphanumeric LCD模塊上顯示消息343 
14.6使用OLED圖形顯示器347 
14.7使用可尋 址的RGB LED燈條349 

第15章物聯網355 
15.0引言355 
15.1使用Web接口控制GPIO輸出355 
15.2在網頁上面顯示傳感器讀數360 
15.3使用IFTTT發送電子郵件及其他通知363 
15.4利用ThingSpeak發送Tweets 367 
15.5 CheerLights 369 
15.6向ThingSpeak發送傳感器數據370 
15.7使用Dweet和IFTTT響應Tweet 373 

第16章Arduino與樹莓派377 
16.0引言377 
16.1通過樹莓派對Arduino進行編程378 
16.2利用Serial Monitor與Arduino進行通信380 
16.3配置PyFirmata以便通過樹莓派來控制Arduino 382 
16.4通過樹莓派對Arduino的數字輸出進行寫操作384 
16.5使用PyFirmata與TTL串口386 
16.6使用PyFirmata讀取Arduino的數字輸入388 
16.7利用PyFirmata讀取Arduino的模擬輸入390 
16.8模擬輸出(PWM)與PyFirmata 391 
16.9利用PyFirmata控制伺服電機393 
16.10定制基於TTL Serial的Arduino通信395 
16.11通過I2C自定義與Arduino之間的通信399 
16.12在樹莓派上使用小型Arduino 402 
16.13 aLaMode板與樹 派入門403 
16.14在樹莓派和aLaMode板上使用Arduino Shield 406 
附錄A配件與供應商409 
附錄B樹莓派引腳415


作者介紹


Simon Monk博士(英國普雷斯頓)擁有控制論和計算機科學本科學位以及軟件工程博士學位。Simon在回歸工業界之前,曾經從事多年的學術研究工作,並與人合作創立了移動軟件公司Momote Ltd。
目前,Simon是一位職業作家,撰寫包括樹莓派和Arduino在內的各種開源硬件方面的作品,以及多部通用電子方面的圖書。




相關書籍

揭秘IoT:原理、系統與機制

作者 [日] 八子知禮 [日] 杉山恆司 [日] 竹之下航洋 蔡曉智

2017-03-01

6LoWPAN:無線嵌入式物聯網

作者 謝爾比 (Zach Shelby) Carsten Bormann

2017-03-01

State Estimation for Robotics

作者 Timothy D. Barfoot

2017-03-01